1000 REM * DARKTERM '88 1010 REM * POCKET 1200 MODEM FILE SRC 1020 REM * 1030 OPEN1,9,15,"S0:D'88.P1200":CLOSE1 1040 OPEN2,9,1,"0:D'88.P1200" 1050 SYS700 1060 .OPT O2 1070 ; 1080 CHKIN =$FFC6 ; KERNAL EQUATES 1090 CHKOUT =$FFC9 1100 CHRIN =$FFCF 1110 CHROUT =$FFD2 1120 CLRCHN =$FFCC 1130 GETIN =$FFE4 1140 ; 1150 PTR =140 ; TEMP POINTER 1160 BAUD =873 1170 ; 1180 DETECT =922 ; CARRIER DETECT FLAG 1190 DDELAY =927 ; DIALING DELAY 1200 WDELAY =926 ; CARRIER WAIT DELAY 1210 HDELAY =925 ; HANGUP DELAY 1220 ; 1230 MILLI =$880+24 ; USE TERMINAL'S 1240 ; 1250 *=$4500 ; STARTS HERE UP TO $47FF 1260 ; 1270 JMP ANSWER ; AUTO-ANSWER 1280 JMP DODIAL ; AUTO-DIAL 1290 JMP ONHOOK ; LABEL SAYS ALL 1300 JMP OFHOOK ; OFF HOOK 1310 JMP CARCHK ; LOST CARRIER CHECK 1320 JMP CUSTOM ; USER DEFINED ROUTINE 1330 JMP HANGUP ; HANGUP ROUTINE 1340 ; 1350 ONHOOK LDA #$22 ; IS THIS RIGHT 1360 STA $DD03 1370 LDA #0 1380 STA $DD01 1390 RTS 1400 ; 1410 OFHOOK LDA #$20 ; OFF-HOOK 1420 STA $DD01 ; PIN J HI 1430 RTS 1440 ; 1450 DODIAL STX PTR ; SAVE ADDRESS 1460 STY PTR+1 ; OF DIAL PTR STRING 1470 JSR ONHOOK ; HANG UP 1480 LDA HDELAY ; WAIT HDELAY SECONDS 1490 JSR WAIT 1500 JSR OFHOOK ; OFF-HOOK 1510 LDA #2 ; WAIT 2 SECONDS 1520 JSR WAIT 1530 LDY #0 ; INDEX TO START 1540 STY POINT 1550 AUTO1 LDY POINT ; GET INDEX 1560 LDA (PTR),Y ; AND CHARACTER 1570 CMP #"0" ; CHECK FOR NUMBER 1580 BCC NEXT ; NO 1590 CMP #":" 1600 BCS NEXT ; NO 1610 SEC ; LESS 48 TO GET # OF 1620 SBC #48 ; PULSES 1630 BNE AUTO2 1640 LDA #10 ; 0, SO MAKE 10 PULSES 1650 AUTO2 STA PULSE ; SAVE IT 1660 LDA #0 ; PULSE COUNT 1670 STA COUNT 1680 AUTO3 JSR (null)OF ; PULSE OFF LINE 1690 LDX DDELAY ; WAIT DELAY 1700 LDY DDELAY+1 1710 JSR MILLI ; WAIT IT OUT 1720 JSR OFHOOK ; PULSE ON LINE 1730 LDX DDELAY ; WAIT AGAIN 1740 LDY DDELAY+1 1750 JSR MILLI 1760 INC COUNT ; NEXT PULSE 1770 LDA COUNT 1780 CMP PULSE ; DONE YET 1790 BNE AUTO3 ; NO 1800 LDA #40 ; WAIT 2/3 SEC FOR NEXT # 1810 JSR JIFFY 1820 JSR ABORT ; CHECK FOR STOP KEY 1830 NEXT INC POINT ; NEXT # 1840 LDA POINT 1850 CMP #18 ; DONE ALL 18 CHARS 1860 BNE AUTO1 ; NO, (null) BACK 1870 LDA WDELAY ; WAIT OUT THE DELAY 1880 JSR WAIT 1890 LDA $DD01 ; HAVE A CARRIER 1900 AND #16 1910 BEQ AUTO4 ; YES, SIGNAL IT 1920 SEC ; NO, SET ZERO FLAG TRUE 1930 LDA #0 ; AND SET CARRY (NOT ABORT) 1940 RTS 1950 AUTO4 SEC ; HAVE CARRIER, SET 1960 LDA #1 ; ZERO FALSE 1970 RTS ; EXIT 1980 ; 1990 ABORT LDA $91 ; CHECK STOP KEY 2000 CMP #$7F 2010 BNE ABO1 ; NO, (null) BACK 2020 ABO0 PLA ; PULL RETURN ADDRESS 2030 PLA 2040 CLC ; CLEAR THE CARRY 2050 ABO1 RTS ; AND EXIT TO TERMINAL 2060 ; 2070 WAIT TAX ; 1 SECOND COUNTER 2080 W0 JSR CLRTIM 2090 W1 LDA $91 ; CHECK FOR ABORT 2100 CMP #$7F ; DURING THE WAIT 2110 BEQ ABO0 2120 LDA $A2 2130 CMP #60 2140 BCC W1 2150 DEX 2160 BMI W2 2170 BNE W0 2180 W2 RTS 2190 ; 2200 POINT .BYT 0 2210 COUNT .BYT 0 2220 PULSE .BYT 0 2230 KEYVAL .BYT 0 2240 ; 2250 ANSWER LDA #32+2 2260 STA $DD03 ; SET UP DDR 2270 LDA #0 2280 STA $DD01 2290 LDA #60 ; WAIT 1 SECOND 2300 JSR JIFFY 2310 AN1 LDA $DD01 ; CHECK FOR RING 2320 AND #8 ; DETECT 2330 BEQ AN2 ; WE HAVE R.D., (null) ON 2340 JSR GETKEY ; CHECK FOR KEYPRESS 2350 BEQ AN1 2360 AN0 JSR OFHOOK ; OFF-HOOK 2370 LDA KEYVAL ; GET KEY PRESSED 2380 CLC ; AND ABORT 2390 RTS 2400 AN2 JSR CLRTIM 2410 JSR OFHOOK ; OFF-HOOK 2420 AN3 JSR GETKEY 2430 BNE AN0 2440 LDA $DD01 ; CHECK FOR DCD LINE 2450 AND #16 2460 BEQ AN4 ; (null)T CARRIER, SIGNAL 2470 LDA 160 2480 CMP #8 ; 30 SECOND CARRIER CHECK 2490 BCC AN3 2500 BCS ANSWER ; TIMES UP, RESET 2510 AN4 JMP CSPEED ; SPEED CHECK 2520 ; LDX #<300 ; SET BAUD RATE TO 300 2530 ; LDY #>300 2540 ; RTS 2550 ; 2560 (null)OF LDA #0 ; PULSE ON-HOOK 2570 STA $DD01 2580 RTS 2590 ; 2600 CLRTIM LDA #0 2610 STA $A0 2620 STA $A1 2630 STA $A2 2640 RTS 2650 ; 2660 JIFFY TAX 2670 JSR CLRTIM 2680 JIFF1 CPX $A2 2690 BCS JIFF1 2700 RTS 2710 ; 2720 GETKEY JSR GETIN 2730 PHA 2740 STA KEYVAL 2750 PLA 2760 RTS 2770 ; 2780 HANGUP JSR ONHOOK ; (null) ON-HOOK 2790 LDA #120 ; WAIT 2 SECONDS 2800 JSR JIFFY 2810 LDA $DD01 2820 AND #16 2830 BEQ HANGUP ; DO UNTIL HUNG UP 2840 JSR OFHOOK ; SET UP FOR NEXT CALL 2850 LDA #120 ; WAIT 2 SECONDS 2860 JMP JIFFY 2870 ; 2880 CARCHK BIT DETECT 2890 BPL CAR1 ; SKIP DETECTION 2900 LDA $DD01 2910 AND #16 2920 BEQ CAR1 ; STILL HAVE CARRIER 2930 CLC 2940 RTS ; CARRIER LOST 2950 CAR1 SEC 2960 RTS 2970 ; 2980 CUSTOM LDX BAUD 2990 LDY BAUD+1 3000 CPX #<1200 3010 BNE CST1 3020 CPY #>1200 3030 BNE CST1 3040 LDA $DD01 3050 ORA #2 ; SET PORT BIT FOR 1200 3060 BNE CST2 3070 CST1 LDA $DD01 3080 AND #%11111101 3090 CST2 STA $DD01 3100 RTS 3110 ; 3120 ; * THIS ROUTINE WILL USE THE 3130 ; PORT REGISTER TO DETECT THE 3140 ; BAUD RATE OF THE INCOMING 3150 ; CALL. 3160 ; 3170 CSPEED JSR CLRTIM 3180 LDA #30 ; WAIT .5 SECONDS 3190 JSR JIFFY 3200 JSR CLRTIM 3210 CSP1 LDA $DD01 3220 AND #1 3230 BEQ CSP2 ; LINE IS LO, 1200 BAUD 3240 LDA $A2 3250 CMP #6 ; CHECK FOR 100 MILLISEC 3260 BCC CSP1 3270 LDX #<300 ; 300 BAUD 3280 LDY #>300 3290 SEC 3300 RTS 3310 CSP2 LDX #<1200 3320 LDY #>1200 ; 1200 BAUD CONNECT 3330 LDA $DD01 3340 ORA #2 ; SET FOR 1200 BAUD 3350 STA $DD01 3360 SEC 3370 RTS 3380 ;